<?php

/**
 * AVE.cms - Модуль Похожие документы
 *
 * @package AVE.cms
 * @subpackage module_MoreDoc
 * @filesource
 */

if(!defined('BASE_DIR')) exit;

if (defined('ACP'))
{
    $modul['ModulName'] = 'Ссылки по теме';
    $modul['ModulPfad'] = 'moredoc';
    $modul['ModulVersion'] = '1.0';
    $modul['description'] = 'Данный модуль предназначен для вывода списка похожих документов относительно текущего. Связующим элементом документов является первое слово из поля Ключевые слова. Результат вывода кешируется средствами Smarty.<BR /><BR />Для вывода списка похожих документов используйте системный тег <strong>[mod_moredoc]</strong> (можно использовать как в документах так и шаблоне рубрики).';
    $modul['Autor'] = 'censored!';
    $modul['MCopyright'] = '&copy; 2010';
    $modul['Status'] = 1;
    $modul['IstFunktion'] = 1;
    $modul['AdminEdit'] = 0;
    $modul['ModulFunktion'] = 'mod_moredoc';
    $modul['CpEngineTagTpl'] = '[mod_moredoc]';
    $modul['CpEngineTag'] = '#\\\[mod_moredoc]#';
    $modul['CpPHPTag'] = '<?php mod_moredoc(); ?>';
}

/**
 * Функция обработки тега модуля
 *
 */
function mod_moredoc()
{
	global $AVE_Core, $AVE_DB, $AVE_Template;

	require_once(BASE_DIR . '/functions/func.modulglobals.php');
	set_modul_globals('moredoc');

	$AVE_Template->caching = true;            // Включаем кеширование
	$AVE_Template->cache_lifetime = 60*60*24; // Время жизни кеша 1 день в секундах
	$AVE_Template->cache_dir .= '/moredoc';   // Папка для кеша модуля

	$tpl_dir = BASE_DIR . '/modules/moredoc/templates/'; // Указываем путь к шаблону модуля

	$point_id = '';
	if(!empty($_REQUEST['rubid']) && is_numeric($_REQUEST['rubid'])){
		$point_id = $_REQUEST['rubid'];
	}elseif(!empty($_REQUEST['galid']) && is_numeric($_REQUEST['galid'])){
		$point_id = $_REQUEST['galid'];
	}else{
		$point_id = $AVE_Core->curentdoc->Id;
	}

	// Если нету в кеше, то начинаем обрабатывать
	if (!$AVE_Template->is_cached($tpl_dir . 'moredoc.tpl', $point_id))
	{
		$limit      = 10; // Количество связных документов
		$flagrubric = 1; // Учитывать или нет рубрику документа (0 - нет, 1 - да)

		$moredoc = array();

		// Проверяем, есть ли папка для кеша, если нет (первый раз) — создаем
		if (!is_dir($AVE_Template->cache_dir))
		{
			$oldumask = umask(0);
			@mkdir($AVE_Template->cache_dir, 0777);
			umask($oldumask);
		}


//print_r($_REQUEST);

if(@$_REQUEST['action'] == 'ShowGal')
{
	$docId = (int)$_REQUEST['galid'];
	$sql = $AVE_DB->Query("SELECT svaz FROM " . PREFIX . "_modul_gallery WHERE Id ='".$docId."' LIMIT 1");
	$row = $sql->fetchrow();
	$row->document_meta_keywords = $row->svaz;
}
elseif(@$_REQUEST['action'] == 'GetCat')
{
	$docId = (int)$_REQUEST['rubid'];
	$sql = $AVE_DB->Query("SELECT svaz FROM " . PREFIX . "_modul_gallery_rubz WHERE id ='".$docId."' LIMIT 1");
	$row = $sql->fetchrow();
	$row->document_meta_keywords = $row->svaz;
}
elseif(@$_REQUEST['action'] == 'getarticles')
{
	$docId = (int)$_REQUEST['article'];
	$sql = $AVE_DB->Query("SELECT svaz FROM " . PREFIX . "_modul_articles_rubz WHERE id ='".$docId."' LIMIT 1");
	$row = $sql->fetchrow();
	$row->document_meta_keywords = $row->svaz;
}
else{
	$docId = $AVE_Core->curentdoc->Id;
	$sql = $AVE_DB->Query("SELECT rubric_id, document_meta_keywords FROM " . PREFIX . "_documents WHERE Id ='".$docId."' LIMIT 1");
	$row = $sql->fetchrow();
	$AVE_Template->assign('row', $row);
	
	//print_r($row);
}	

//print_r($row->document_meta_keywords);
/*
		$row = $AVE_DB->Query("
			SELECT
				rubric_id,
				document_meta_keywords
			FROM " . PREFIX . "_documents
			WHERE Id = '" . $AVE_Core->curentdoc->Id . "'
			LIMIT 1
		")->FetchRow();
*/
		//$keywords = explode(',',$row->document_meta_keywords);
		//$keywords = trim($keywords[0]);
		$keywords = explode(',',$row->document_meta_keywords);
		

		if ($keywords != '')
		{
			//print_r($keywords);
			foreach ($keywords as $Match)
			{
			
			
				if(@substr($Match,0,1) != "-")
				{
					if ($Match != '') {
						if ($flagRubric) {
							$inRubric = "AND rubric_id ='".$rubric."'";
						} else {
							$inRubric = '';
						}
						
			//$inrubric = $flagrubric ? ("AND rubric_id = '" . $row->rubric_id . "'") : '';
			$doctime  = get_settings('use_doctime')
				? ("AND document_published <= " . time() . " AND (document_expire = 0 OR document_expire >= " . time() . ")") : '';

			// Ищем документы где встречается такое-же слово
			$sql = $AVE_DB->Query("
				SELECT
					Id,
					document_expire,
					document_title_".$_SESSION['user_language'].",
					document_alias,
					document_meta_description
				FROM " . PREFIX . "_documents
				WHERE document_meta_keywords LIKE '%".$Match . "%'
				AND Id != 1
				AND Id != '" . PAGE_NOT_FOUND_ID . "'
				AND Id != '" . $AVE_Core->curentdoc->Id . "'
				AND document_status != '0'
				AND document_deleted != '1'
				" . $inrubric . "
				" . $doctime . "
				ORDER BY document_count_view DESC
				LIMIT " . $limit
			);

			while ($row = $sql->FetchRow())
			{
			
				//print_r($row->document_alias);
			
				$document_title = "document_title_".$_SESSION['user_language'];
				$row->document_title = $row->$document_title;
			
				if ($doctime != '' && (time() + $AVE_Template->cache_lifetime) > $row->document_expire)
				{
					// Изменяем время жизни кеша так что-бы оно не превышало
					// время окончания публикации попавших в выборку документов
					$AVE_Template->cache_lifetime = $row->document_expire - time();
				}
				$row->document_link = rewrite_link('index.php?id=' . $row->Id . '&amp;doc=' . (empty($row->document_alias) ? prepare_url($row->document_title) : $row->document_alias));
				
				if (mb_substr($row->document_alias, - strlen(ABS_PATH)) != ABS_PATH) $row->document_alias = ABS_PATH.$row->document_alias;
				//print_r($row->document_link);
				
				array_push($moredoc, $row);
			}
			// Закрываем соединение
			$sql->Close();
			
			
			
			
			
			
						$sql = $AVE_DB->Query("
						SELECT 
							rub.id, 
							rub.name_".$_SESSION['user_language'].", 
							rub.parent,
							rub.description_".$_SESSION['user_language'].",
							rub.document_alias,
							doc.preimage 
						FROM 
							" . PREFIX . "_modul_articles_rubz as rub
						LEFT JOIN
							" . PREFIX . "_documents AS doc ON doc.rubid = rub.id
						WHERE 
							(rub.svaz LIKE '%".$Match."%') 
							AND rub.id !='".$docId."' 
						GROUP BY Id
						ORDER BY rub.id DESC 
						LIMIT 0,$limit");

						while ($row = $sql->fetchrow()){
						
							$document_title = "name_".$_SESSION['user_language'];
							$row->document_title = $row->$document_title;
							$description = "description_".$_SESSION['user_language'];
							$row->pretext = $row->$description;
							if (mb_substr($row->document_alias, - strlen(ABS_PATH)) != ABS_PATH) $row->document_alias = ABS_PATH.$row->document_alias;
							
							//$row->document_alias = "/".$row->document_alias;


								//$row->image = (!empty($row->preimage)) ? "<a onfocus=\"if(this.blur)this.blur()\" href=\"".$row->document_alias."\"><img class=\"thumb\" style=\"float:none;\" src=\"/thumb.php?file=/".$row->image."&amp;x_width=100\" klerol=\"".$row->document_title."\" alt=\"".$row->document_title."\"/></a>" : "";							
							
							array_push($moredoc, $row);
						}			
			
			
			
						$sql = $AVE_DB->Query("SELECT id, name, document_alias FROM " . PREFIX . "_modul_gallery_rubz WHERE (svaz LIKE '".$Match."%') AND id !='".$docId."'  ORDER BY id DESC LIMIT 0,$limit");
						while ($row = $sql->fetchrow()){
							$row->document_title = $row->name;
							if (mb_substr($row->document_alias, - strlen(ABS_PATH)) != ABS_PATH) $row->document_alias = ABS_PATH.$row->document_alias;
							array_push($moredoc, $row);
						}						
						
						$sql = $AVE_DB->Query("SELECT Id, gallery_title, rubid, document_alias FROM " . PREFIX . "_modul_gallery WHERE (svaz LIKE '".$Match."%') AND id !='".$docId."' ORDER BY Id DESC LIMIT 0,$limit");
						while ($row = $sql->fetchrow()){
							$row->document_title = $row->gallery_title;
							if (mb_substr($row->document_alias, - strlen(ABS_PATH)) != ABS_PATH) $row->document_alias = ABS_PATH.$row->document_alias;
							array_push($moredoc, $row);
						}				
			
			
		}
	}
}	
			
		}
		
			
		
		// Передаём переменную moredoc в шаблон
		$AVE_Template->assign('moredoc', $moredoc);
	}
	// Выводим шаблон moredoc.tpl
	$AVE_Template->display($tpl_dir . 'moredoc.tpl', $point_id);

	$AVE_Template->caching = false; // Отключаем кеширование
}

?>
